In a modern communications network, there are provided a large number of physical resources, comprising hardware and software elements, the physical resources cooperating to provide services such as conventional voice telephone, facsimile and data transmission services. Particularly in the telecommunications industry, there exists a bewildering array of proprietary equipment items, eg broadband network elements including central office exchange switches, wireless mobile network equipment, access network equipment and the like, operating a large number of standard and proprietary protocols and interfaces. For provision of services of conventional communications networks, and for internal control and management of those communications networks, in recent years software applications have been growing in terms of size, complexity, diversity and importance. This has resulted in substantial development times for new communications equipment items having complex software controls and offering complex software controlled services.
Further, technologies of telecommunications and computers, which in the past have been separate, are converging at an increasing rate, the internet providing an alternative communications medium to national and international connection oriented telephone networks.
In this context, the viability of communications services and applications is strongly dependent on organization of software control systems, and how quickly changes to software can be implemented. An extent of the scale of the problem of bringing a new communications service to market is exemplified by a conventional central office exchange switch, in which software controls of the switch may comprise several million lines of code. For introduction of new services and features supported by the central office switch, full software upgrades may be released over a time scale of two to three years, resulting in a time to market for new services of similar time scale.
Within the computing and communications industries, various programming technologies have been adopted with a view to improving the manageability of highly complex physical resources. One such technology is broadly categorized as Object Oriented Programming (OOP). Object Oriented Programming facilitates a natural model of a problem domain, modeling a problem or task in terms of objects and relationships between those objects. An object is an abstraction of a set of real world things such that:
all of the real world things in the set (termed instances) have the same characteristics; and PA1 all instances are subject to and conform to the same rules. PA1 a plurality of said physical resources comprising a plurality of processors, and a plurality of memory means; PA1 a plurality of agent computing entities residing at said physical resources; PA1 a means for communicating between said physical resources; and PA1 means for interfacing said agent computing entities to said communications means such that said agent computing entities are able to communicate with each other over said communications network. PA1 a communications platform supporting communications between said agent computing entities; PA1 a shell means for a said agent computing entity, said shell means comprising: PA1 at least one data processor; PA1 at least one memory means capable of storing data signals; PA1 a set of control instructions configured for controlling said at least one processor to perform data processing operations on said data signals; and PA1 said physical resources configured as a plurality of computing entities, and a communications platform; PA1 said plurality of agent computing entities each comprising an interface for interfacing with said communications platform and one or more object representations of a modeled system. PA1 representing said agent entity as a set of messages in an agent communications language; PA1 transporting said messages over a CORBA platform between said first and second locations; and PA1 converting said messages back to code representing said agent computing entity. PA1 interacting a first said computing entity with a second said computing entity by: PA1 receiving signals in the form of a CORBA event encoded in an interface definition language syntax from said CORBA platform; and PA1 converting said interface definition language syntax signals to agent communication language messages containing said first data. PA1 a first said agent entity sending a message to a second said agent entity, said message containing data describing functionality available at said first agent entity; PA1 said second agent entity responding to said first agent entity by sending a message signal containing data describing functionality available at said second agent entity.
Object oriented programming allows some reuse of programming effort, by reuse of sub-classes. For example, where a set of physical resources have constituent components which recur, by modeling those recurring elements in an object oriented manner, an amount of programming effort can be re-used.
Mainstream prior art object oriented programming languages such as Java or C++ enable direct reuse of classes, but impose a number of restrictions. For example only classes written in the same language can be bound together to form a new application. Java supports effective run-time linking of classes, but the interfaces are pre-determined. Java supports integration with C/C++ code, but to achieve this integration, special "glue" code must be produced. An ability to bind classes also requires that a program developer understands the interface for the services offered, which are required to be hard coded into an application.
At the same time as the trend towards complexity and diversity of physical resource types and protocols, there is a trend for telecommunication systems and computing systems to become geographically distributed instead of control of services and data processing being located at centralized locations, in order to make better use of geographically disparate physical resources, a trend is for control functions and data processing functions to be carried out simultaneously at a plurality of different geographical locations within the same system. Distribution of control and data processing functions gives rise to many problems concerning interfacing and communication between different physical resources in an efficient manner, a problem which is compounded by the variety and large number of prior art physical resource types and protocols in use.
CORBA is a standard for distributed objects being developed by the Object Management Group (OMG). It provides an infrastructure allowing objects to converse, independent of the specific platforms and techniques used to implement the objects. CORBA is an application frame work that provides interoperability between objects, built-in (possibly) different languages, running on (possibly) different machines in heterogenous distributed environments. Core to CORBA is the Interface Description Language (IDL) and the Object Services. IDL provides a way for services of components to be described, hiding implementation details. Object Services are domain independent interfaces that are used by many distributed object programs to fulfill roles such as enabling a client to reference objects by names (ie the Naming Service).
On the other hand, another prior art approach aimed at improving the manageability of vastly distributed, hetergenous complex physical resources has emerged, being loosely termed "Agent Oriented Programming" (AOP). Agent oriented programming has been applied in the field of telecommunications. Cooperating intelligent agents have been described which may be used to provide quality and flexibility of control sufficient to meet demands of modem information technology services, in spite of problems presented by a multiplicity of protocols and communications platforms.
The technology of agent oriented programming is in its infancy, and a standardized, or common definition of an "agent" has yet to be accepted. In the context of this disclosure and the specific implementations of the present invention described hereafter, an agent is considered to be a piece of software, which is able to perform specific pre-defined tasks autonomously (on behalf of a user, an application or another agent). Such agents could be either stationary, providing the necessary intelligence, or mobile so that they can move between different incompatible systems to access remote resources or even meet other agents (or activate them) and co-operate with them. Key properties of an agent are considered to be peer level communication and co-operation skills, autonomous execution, adaptive and reactive behavior. Agents are thus considered highly suited for dynamic telecommunications environments. However, conventional disclosures relating to agent oriented programming techniques tend to focus on mobility of agents over different physical resources and protocol platforms, without addressing the specific issues of how agent entities are able to interact with each other in a general way to provide specific functionality for control of physical resources, and provision of services. Prior art approaches focus on packaging up an agent and transporting the agent around a network. For example, a functionality capable of being performed by an agent may be required by an application at a particular location. The application may request the functionality of that agent, resulting in the agent being transported to the physical location of the application, ie the agent is packaged up and communicated over a network, and once arriving at the location of the application, the agent then performs the functionality requested by the application.